﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace QuocityService
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de interfaz "IQuocityPrivateService" en el código y en el archivo de configuración a la vez.
    [ServiceContract]
    public interface IQuocityPrivateService
    {

        /// <returns>El id del nuevo itinerario. -1 si ha habido algún error</returns>
        [OperationContract]
        int AddItinerary(int cityId, string name, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool UpdateItineraryName(int itineraryId, string newName, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool UpdateItineraryDescription(int itineraryId, string newDescription, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool UpdateItineraryVisibility(int itineraryId, bool isPublic, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool MarkItinerary(int itineraryId, int mark, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool DeleteItinerary(int itineraryId, string googleUserId);

        /// <returns>El id del nuevo elemento de itinerario. -1 si ha habido algún error</returns>
        [OperationContract]
        int AddItineraryItem(int itineraryId, string name, float longitude, float latitude, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool UpdateItineraryItemSortIndex(int itineraryId, int itineraryItemId, short newSortIndex, string googleUserId);

        /// <returns>True si todo ha ido bien</returns>
        [OperationContract]
        bool UpdateItineraryNotes(int itineraryId, int itineraryItemId, string newNotes, string googleUserId);

       
    }
}
